/*
 *  pnm_utils.h
 *  PrimoAssegnamentoPGM
 *
 *  Created by lollo on 21/10/11.
 *  Copyright 2011 __MyCompanyName__. All rights reserved.
 *
 */

/** Write a PPM file
 * @param filename a file 
 * @param buf an RGB buffer
 * @param width geometry of buffer
 * @param height geometry of buffer
 * @return true if file is created
 */
bool write_ppm(const char *filename, const unsigned char *buf, unsigned int width, unsigned int height);

/** Write a PGM file
 * @param filename a file 
 * @param buf an greyscale buffer
 * @param width geometry of buffer
 * @param height geometry of buffer
 * @return true if file is created
 */
bool write_pgm(const char *filename, const unsigned char *buf, unsigned int width, unsigned int height);

static void pnm_skip_comments(std::istream & i);


static char pnm_read_header(unsigned int & width, unsigned int &height, std::istream &iss);

/// Load a PGM image, reserve memory with new and return geometry
/// @param [out] width|height geometry of image
/// @param [in] file filename
/// @return a pointer to image first pixel allocated with new operator, or NULL in case of error

unsigned char *pgm_load(unsigned int & width, unsigned int &height, const char *file);

/// Load a PPM image, reserve memory with new and return geometry
/// @param [out] width|height geometry of image
/// @param [in] file filename
/// @return a pointer to image first pixel allocated with new operator, or NULL in case of error

unsigned char *ppm_load(unsigned int & width, unsigned int &height, const char *file);





/*   
 *   writepnm.cpp Copyright (C) 2008-2010 Paolo Medici
 *
 *   This library is free software; you can redistribute it and/or modify it under the terms of the 
 *    GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of 
 *    the License, or (at your option) any later version.
 *
 *   This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 
 *    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
 *    License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License along with this library; if not, 
 *   write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
 */
